home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NOVA - For the NeXT Workstation
/
NOVA - For the NeXT Workstation.iso
/
SourceCode
/
AdobeExamples
/
NX_Binary
/
iparserhooks.m
< prev
next >
Wrap
Text File
|
1992-12-19
|
4KB
|
318 lines
/*
* (a) (C) 1990 by Adobe Systems Incorporated. All rights reserved.
*
* (b) If this Sample Code is distributed as part of the Display PostScript
* System Software Development Kit from Adobe Systems Incorporated,
* then this copy is designated as Development Software and its use is
* subject to the terms of the License Agreement attached to such Kit.
*
* (c) If this Sample Code is distributed independently, then the following
* terms apply:
*
* (d) This file may be freely copied and redistributed as long as:
* 1) Parts (a), (d), (e) and (f) continue to be included in the file,
* 2) If the file has been modified in any way, a notice of such
* modification is conspicuously indicated.
*
* (e) PostScript, Display PostScript, and Adobe are registered trademarks of
* Adobe Systems Incorporated.
*
* (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
* CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
* AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
* ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
* OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
* WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
* WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
* DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
* OF THIRD PARTY RIGHTS.
*/
/*
* iparserhooks.m
*
* Version: 2.0
* Author: Ken Fromm
* History:
* 03-07-91 Added this comment.
*/
#import "iinterpreter.h"
#import "iinterpreterhooks.h"
#import "Graphic.h"
#import <dpsclient/dpsclient.h>
#import <stdio.h>
extern char yytext[];
extern int yyleng;
void i_int()
{
int avalue;
sscanf(yytext,"%d", &avalue);
ipushint(avalue);
}
void i_real()
{
float avalue;
sscanf(yytext,"%f", &avalue);
ipushreal(avalue);
}
/* Omit the preceding slash. */
void i_literal()
{
ipushname(&yytext[1], yyleng-1);
}
void i_name()
{
printf("%s\n", yytext);
}
void i_array()
{
}
/* Disregard the open and close parens. */
void i_string()
{
ipushstring(&yytext[1], yyleng-2);
}
void i_f()
{
iinsertPath(FILL);
}
void i_s()
{
iinsertPath(STROKE);
}
void i_clip()
{
iinsertPath(CLIP);
}
void i_T()
{
iclear();
}
void i_A()
{
iclear();
}
void i_W()
{
iclear();
}
void i_AW()
{
iclear();
}
void i_m()
{
iinsertPathOp(dps_moveto,2);
}
void i_lineto()
{
iinsertPathOp(dps_lineto,2);
}
void i_L()
{
int i, index;
ipopint(&index);
for (i = index; i > 0; i--)
iinsertPathOp(dps_lineto,2);
}
void i_r()
{
iinsertPathOp(dps_rlineto,2);
}
void i_R()
{
int i, index;
ipopint(&index);
for (i = index; i > 0; i--)
iinsertPathOp(dps_rlineto,2);
}
void i_l()
{
iinsertPathOp(dps_moveto,2);
iinsertPathOp(dps_lineto,2);
iinsertPath(STROKE);
}
void i_x()
{
ipushreal(0.0);
iinsertPathOp(dps_rlineto,2);
}
void i_y()
{
ipushreal(0.0);
iroll(2,1);
iinsertPathOp(dps_rlineto,2);
}
void i_X()
{
iinsertPathOp(dps_moveto,2);
ipushreal(0.0);
iinsertPathOp(dps_rlineto,2);
iinsertPath(STROKE);
}
void i_Y()
{
iinsertPathOp(dps_moveto,2);
ipushreal(0.0);
iroll(2,1);
iinsertPathOp(dps_rlineto,2);
iinsertPath(STROKE);
}
void i_c()
{
iinsertPathOp(dps_curveto,6);
}
void i_cp()
{
iinsertPathOp(dps_closepath,0);
}
void i_w()
{
float avalue;
ipopreal(&avalue);
ii_setlinewidth(avalue);
}
void i_g()
{
float avalue;
ipopreal(&avalue);
ii_setgray(avalue);
}
void i_j()
{
int avalue;
ipopint(&avalue);
ii_setlinejoin(avalue);
}
void i_d()
{
/* setdash not implemented */
iclear();
}
void i_miter()
{
float avalue;
ipopreal(&avalue);
ii_setmiterlimit(avalue);
}
void i_cap()
{
float avalue;
ipopreal(&avalue);
ii_setlinecap(avalue);
}
void i_RGB()
{
float r, g, b;
ipopreal(&b);
ipopreal(&g);
ipopreal(&r);
ii_setrgbcolor(r, g, b);
}
void i_F()
{
/* setfont not implemented */
iclear();
}
void i_MF()
{
/* makefont not implemented */
iclear();
}
void i_FF()
{
/* setfont not implemented */
iclear();
}
void i_DF()
{
/* definefont not implemented */
iclear();
}
void i_IMASK()
{
/* imagemask not implemented */
iclear();
}
void i_IMAGE()
{
/* image not implemented */
iclear();
}
void i_BPAGE()
{
ipop();
}
void i_EPAGE()
{
int page_num;
ipopint(&page_num);
iinsertPage(page_num);
}
void i_REMAP()
{
iclear();
}
void i_RECODE()
{
iclear();
}